iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
自我挑戰組

遊戲中的冰山一角-網路連線系列 第 16

Day16-Unreal連線初學(1)

  • 分享至 

  • xImage
  •  

接下來筆者希望能夠簡單的實做出網路連線的功能,而筆者會用Unreal Engine(以下會簡稱為UE)做示範,因此會先整理與介紹官方文件所給予的指令與教學。

事前準備:

·作業系統:Windows 11
·開發引擎:Unreal Engine
·版本:5.0.3
·開發語言:C/C++
·開發環境:VSCode

UE最主要是以C/S的模型實現多人連線,並且官方已經寫好了Replicate system讓開發者減省大量的時間,不需要去煩惱網路方面的各種問題就像先前提過得socket之類的,只需要簡單的步驟就能讓想要的資訊replicate,雖然操作簡單但還是要理解箇中原理才能讓連線的品質最佳化,下面會分成三大類來說明UE是怎麼去處理網路資訊。

一.網路模式:

UE主要有四個網路模式,主要的比較如下圖:
https://ithelp.ithome.com.tw/upload/images/20220916/20151289xZxpwvtkW1.jpg

可以看到除了Dedicated Server以外都是可以遊玩的,因此在遊戲開發時官方也建議在網路模式的前提下進行開發,無論該遊戲是否有需要連線,一方面是實際在執行遊戲本地執行與有連線功能執行並不會有太大的差異,再者是對於之後倘若需要連線功能時不需要將整份專案重寫,在改變上能節省較多時間。

二.Remote Procedure Calls(RPCs)

這主要是為了函式而生的功能,最大的特色就是他是即時呼叫與執行,並且他分成Server,Client與NetMulticast三種類行。

範例Code:

UFUNCTION(Client)
void Client_Execute();

UFUNCTION(Server)
void Server_Execute();

UFUNCTION(NetMulticast)
void Multicast_Execute();

Client的執行流程:

https://ithelp.ithome.com.tw/upload/images/20220916/20151289YLTSuBAJrD.jpg

Server的執行流程:

https://ithelp.ithome.com.tw/upload/images/20220916/20151289q7vFYKicKL.jpg

NetMulticast的執行流程:

https://ithelp.ithome.com.tw/upload/images/20220916/20151289eC8RLLnCML.jpg

也可以在Server端去設定誰有資格執行此函式。

https://ithelp.ithome.com.tw/upload/images/20220916/20151289MD0d3mzi53.jpg

在實做函式的時候需要在定義的後面加上_Implementation的關鍵字才會去執行。

三.Actor/Component/Variables replication

這部份最主要是要說明所有的遊戲內容該怎麼去溝通,與一般的C/S模型不同,UE會在Server端模擬一遍遊戲內容後再把結果replicate到客戶端而不是只把玩家的輸入同步給所有人,因此在傳送上會有頻寬的問題若頻寬不夠有可能就會讓資訊遺失,UE在這點上是讓開發者去設定要replicate的資訊自己的優先度,優先度越高的會越先進行傳送,但最主要的還是開發者自己要去思考什麼東西需要replicate什麼不需要。


上一篇
Day15-遊戲連線基礎(14)-Rollback part 6
下一篇
Day17-Unreal連線初學(2)
系列文
遊戲中的冰山一角-網路連線30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言